// 岗位服务层
// @author likai

package service

import (
	"admin-go-api/api/dao"
	"admin-go-api/api/entity"
	"admin-go-api/common/result"
	"github.com/gin-gonic/gin"
)

type ISysPostService interface {
	CreateSysPost(c *gin.Context, sysPost entity.SysPost)
	GetSysPostById(c *gin.Context, Id int)
	UpdateSysPost(c *gin.Context, sysPost entity.SysPost)
	DeleteSysPostById(c *gin.Context, dto entity.SysPostIdDto)
	BatchDeleteSysPost(c *gin.Context, dto entity.DelSysPostDto)
	UpdateSysPostStatus(c *gin.Context, dto entity.UpdateSysPostStatusDto)
	GetSysPostList(c *gin.Context, pageNum, pageSize int, PostName, PostStatus, BeginTime, EndTime string)
	QuerySysPostVoList(c *gin.Context)
}

type SysPostServiceImpl struct{}

// QuerySysPostVoList 岗位下拉列表
func (s SysPostServiceImpl) QuerySysPostVoList(c *gin.Context) {
	result.Success(c, dao.QuerySysPostVoList())
}

// GetSysPostList 按页查询岗位列表
func (s SysPostServiceImpl) GetSysPostList(c *gin.Context, pageNum, pageSize int, PostName, PostStatus, BeginTime, EndTime string) {
	if pageSize < 1 {
		pageSize = 10
	}
	if pageNum < 1 {
		pageNum = 1
	}
	sysPost, count := dao.GetSysPostList(pageNum, pageSize, PostName, PostStatus, BeginTime, EndTime)
	result.Success(c, map[string]interface{}{"total": count, "pageSize": pageSize, "pageNum": pageNum, "list": sysPost})
}

// UpdateSysPostStatus 修改岗位状态
func (s SysPostServiceImpl) UpdateSysPostStatus(c *gin.Context, dto entity.UpdateSysPostStatusDto) {
	dao.UpdateSysPostStatus(dto)
	result.Success(c, true)
}

// BatchDeleteSysPost 批量删除
func (s SysPostServiceImpl) BatchDeleteSysPost(c *gin.Context, dto entity.DelSysPostDto) {
	dao.BatchDeleteSysPost(dto)
	result.Success(c, true)
}

// DeleteSysPostById 根据ID删除岗位
func (s SysPostServiceImpl) DeleteSysPostById(c *gin.Context, dto entity.SysPostIdDto) {
	dao.DeleteSysPostById(dto)
	result.Success(c, true)
}

// UpdateSysPost 修改岗位
func (s SysPostServiceImpl) UpdateSysPost(c *gin.Context, sysPost entity.SysPost) {
	result.Success(c, dao.UpdateSysPost(sysPost))
}

// GetSysPostById 根据id查询岗位
func (s SysPostServiceImpl) GetSysPostById(c *gin.Context, id int) {
	result.Success(c, dao.GetSysPostById(id))
}

// CreateSysPost 新增岗位
func (s SysPostServiceImpl) CreateSysPost(c *gin.Context, sysPost entity.SysPost) {
	bool := dao.CreateSysPost(sysPost)
	if !bool {
		result.Failed(c, int(result.ApiCode.POSTALREADYEXISTS), result.ApiCode.GetMessage(result.ApiCode.POSTALREADYEXISTS))
		return
	}
	result.Success(c, true)
}

var sysPostService = SysPostServiceImpl{}

func SysPostService() ISysPostService {
	return &sysPostService
}
